/********************************Copyright (c)**********************************\
**
**                   (c) Copyright 2023, Main, China, QD.
**                           All Rights Reserved
**
**                                 By(wo4fisher)
**                           http://www.wo4fisher.com
**
**----------------------------------文件信息------------------------------------
** 文件名称: encoder.c
** 创建人员: wht
** 创建日期: 2023-10-20
** 文档描述: 
**
**----------------------------------版本信息------------------------------------
** 版本代号: V0.1
** 版本说明: 初始版本
**
**------------------------------------------------------------------------------
\********************************End of Head************************************/
 #include "encoder.h"
#include "tim.h"
#include "beep.h"

volatile uint16_t encoderCnt = 0,encoderCntOld = 0;

/*******************************************************************************
** 函数名称: Bsp_Encoder_Set_Count
** 功能描述: 
** 参数说明: cntInit: [输入/出] 
** 返回说明: None
** 创建人员: wht
** 创建日期: 2023-10-20
**------------------------------------------------------------------------------
** 修改人员:wht
** 修改日期:
** 修改描述:
**------------------------------------------------------------------------------
********************************************************************************/
void Bsp_Encoder_Set_Count(uint16_t cntInit)
{
	encoderCnt = cntInit;
	encoderCntOld =  encoderCnt;
}
/*******************************************************************************
** 函数名称: Bsp_Encoder_Start
** 功能描述: 
** 参数说明: cntInit: [输入/出] 
** 返回说明: None
** 创建人员: wht
** 创建日期: 2023-10-20
**------------------------------------------------------------------------------
** 修改人员:wht
** 修改日期:
** 修改描述:
**------------------------------------------------------------------------------
********************************************************************************/
void Bsp_Encoder_Start(uint16_t cntInit)
{
	
	Bsp_Encoder_Set_Count(cntInit);

	__HAL_TIM_SET_COUNTER(&htim2,32000);
    HAL_TIM_Encoder_Start ( &htim2,TIM_CHANNEL_ALL );

}
/*******************************************************************************
** 函数名称: Bsp_Encoder_Task
** 功能描述: 
** 参数说明: None
** 返回说明: None
** 创建人员: wht
** 创建日期: 2023-10-20
**------------------------------------------------------------------------------
** 修改人员:wht
** 修改日期:
** 修改描述:
**------------------------------------------------------------------------------
********************************************************************************/
uint8_t Bsp_Encoder_Task(void)
{
	uint8_t keyMsg = ENCODERKEYNONE;
	if (HAL_GPIO_ReadPin(ENCODER_KEY_GPIO_Port,ENCODER_KEY_Pin)==GPIO_PIN_RESET)
	{
		HAL_Delay ( 10 );
		if (HAL_GPIO_ReadPin(ENCODER_KEY_GPIO_Port,ENCODER_KEY_Pin)==GPIO_PIN_RESET)
			keyMsg = ENCODERKEYCLICK;
	}
	encoderCnt = __HAL_TIM_GET_COUNTER ( &htim2 );
	if((encoderCnt - encoderCntOld >= ENCODERTHRESHOLD) && (0==__HAL_TIM_IS_TIM_COUNTING_DOWN ( &htim2 )))
	{
		encoderCntOld = encoderCnt;
		keyMsg = ENCODERKEYNEXT;
	}
	if((encoderCntOld - encoderCnt >= ENCODERTHRESHOLD) && (1==__HAL_TIM_IS_TIM_COUNTING_DOWN ( &htim2 )))
	{
		encoderCntOld = encoderCnt;
		keyMsg = ENCODERKEYPRE;	
	}
//	if(keyMsg!=ENCODERKEYNONE)
//		Bsp_Beep(10);
	return keyMsg;

}

/********************************End of File************************************/
